import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import qinakun from 'vite-plugin-qiankun'
import { resolve } from 'path'

export default ({ mode }) => {
  const env = loadEnv(mode, process.cwd()) // 获取 .env 文件里定义的环境变量
  return defineConfig({
    base: env.VITE_APP_PD, // 配置路径
    resolve: {
      // 配置别名
      alias: {
        '@': resolve(__dirname, 'src')
      }
    },
    server: {
      host: '0.0.0.0', // 默认是 localhost
      port: 8005, // 默认是 3000 端口
      strictPort: true, // 设为 true 时若端口已被占用则会直接退出，而不是尝试下一个可用端口
      https: false, // 是否开启 https
      proxy: {}, // 本地开发环境通过代理实现跨域，生产环境使用 nginx 转发
      cors: true // 为开发服务器配置 CORS，默认启用并允许任何源
    },
    build: {
      outDir: 'dist', // 打包构建输出路径，默认 dist，如果路径存在，构建之前会被删除
      cssCodeSplit: true, // 启用代码拆分，如果禁用，整个项目中的所有 CSS 将被提取到一个 CSS 文件中
      sourcemap: false, // 构建后是否生成 source map 文件，禁用加快构建速度
      brotliSize: false, // brotli 压缩大小报告。压缩大型输出文件可能会很慢，因此禁用该功能可能会提高大型项目的构建性能
      minify: 'terser', // 混淆器，terser 构建后文件体积更小
      terserOptions: {
        // 生产环境移除
        compress: {
          drop_console: true,
          drop_debugger: true
        }
      }
    },
    plugins: [
      vue(), // 挂载 vue
      qinakun('productDevelop', { useDevMode: true }) // 导出子应用生命周期
    ]
  })
}
